関数モナドを使ったpoint free style
関数モナドを使ったpoint-free style
引数が2回登場する以下のような関数
code:hs
f x = g (h x) x
まずh xして、その結果を使ってg _ xする
point free styleで書けるのかなと思ってPointfree.ioで変換したらできた
code:hs
f = g =<< h
code:hs
g :: a -> a -> a
h :: a -> a
doを使って書くと
code:hs
f :: a -> a
f = do
a <- h
g a
可読性が悪い && 登場頻度少なそう、だが見ておく
関数モナドにおけるbindの型は
code:hs
(=<<) :: (a -> r -> b) -> (r -> a) -> (r -> b)
上記の例で、point-freeになっているxの型はrmrsekut.icon
2つの関数を取って、関数r -> bを返す